home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Chip 1996 April
/
CHIP 1996 aprilis (CD06).zip
/
CHIP_CD06.ISO
/
hypertxt.arj
/
9411
/
CHIPKEDD.CD
< prev
next >
Wrap
Text File
|
1994-11-27
|
8KB
|
134 lines
@VKét rejtvényünk megoldásai@N
@VCellák és nehéz szakaszok@N
Ismét közöljük két régebbi feladványunk megoldását.
Júniusi számunkban jelent meg @KÅrva bitek@N címmel a
következô fizikai eredetû probléma: egy detektor
négyzetrácsba rendezett érzékelôkbôl áll. Ha igazi
részecske halad át rajta, akkor legalább két szomszédos
érzékelô cella állapota 1-re változik. Sajnos azonban egy
cella véletlenszerûen is 1 állapotba kerülhet az alap (0)
állapotból. A feladat az, hogy megállapítsuk, mely pontok
tartoznak a zajhoz (ôk az ""árva bitek"), és töröljük ki
ezeket. A rejtvényre öt olvasónk hat megfejtést küldött
be, négy Pascal, egy-egy pedig C, Prolog nyelveken. Közülük
egy hibásan mûködött. A többi program sikeresnek
bizonyult: hatalmas tömböket vizsgáltak át s tettek
rendbe, igen rövid idôk alatt -- természetesen azért
akadtak eltérések mind a méretekben, mind a tempóban.
(Továbbá még egy csomó egyéb dologban: van-e grafikus,
esetleg karakteres kijelzés, adatokat állományból olvassa,
vagy klaviatúráról, esetleg véletlen generálás történik és
így tovább.) Kiderült (amint erre Matolcsi Tamás is utalt),
hogy a Prologot nem igazán ilyen típusú feladatokra
találták ki: teljesítménye a közelébe sem ért a többi
programnak (100x100-as ""távon" 40 sec.).
Az elsô, tesztként használt 100x100-as tömböt 0,05 és 0,65
másodperc közötti idôk alatt pucolták ki a ""többiek"
(386DX/40). A következô lépcsôként
alkalmazott 480 ezer cella esetében 0,6-2,5 másodpercre
volt szükség (érdekesség: Matolcsi Tamás Pascal programja
nem volt tekintettel a méretváltozásra, pontosan ugyanannyi
idô -- 0,65 s -- kellett a majd ötvenszer akkora tömb
kezeléséhez.) Az egyik csúcsteljesítmény feltétlenül
Maleskovits Péteré: a több mint 4 millió cellás detektort
nem egészen 5 másodperc alatt elrendezi. A méretekben a
plafont Matolcsi Tamás érte el, de ... ""A program kb. 16
milliárd cellából álló detektorhálót tud kitisztítani,
amennyiben van a winchesteren ehhez elég hely (2 Gbyte) és
rendelkezünk 98 nap szabad gépidôvel (386DX/40-en)." A
többféle lehetséges megoldási elv közül Maleskovits Péterét
tekintsük meg. Programja az érzékelôket bitenként ábrázolja
(Word típusú mezôkben), ehhez az oszlopok számát
tizenhattal oszthatóra változtatja. A négyzetrácsot a
heap-ben tárolja, így az a szabad memóriától függôen akár
négymilló bitet is tartalmazhat.
Az algoritmus lényege olvasónk megfogalmazásában: ""Minden
sor vizsgálatánál egy akkora méretû Word típusú vektort
definiál az elsô elem memóriacímére, amely három egymást
követô sort lefed. Ezután mindhárom sor elsô három elemét
lokális változókba helyezi, majd végiglépteti a soron.
Minden lépésnél a középsô sor középsô elemét vizsgálja meg
a program, hogy van-e benne zaj. Ehhez egy maszkot képez a
kilenc elembôl: minden 1-es bitbôl három szomszédos 1-es
bitet képez. Majd logikai @KÉS@N mûveletet végez a maszk és
az eredeti (középsô) elem között, így ha a vizsgált elemben
van zaj, akkor az törlôdik. Amikor a négyzetrács egy
szélsô elemét kell vizsgálni, akkor a nem létezô szomszéd
elemeket nullával helyettesíti a program."
A szerencse kegyeltje, s így a hónap nyertese Tóth Zoltán;
a CT BBS-en Maleskovits Péter Pascal programja található
meg.
@VNehéz szakaszok@N
Kemény diónak bizonyult júliusi rejtvényünk, melyet Varga
József olvasónk javasolt kitûzésre, s amely annak
eldöntését kívánta meg, hogy a síkban kezdô- és
végpontjának koordinátáival megadott @KN@N darab szakaszhoz
található-e olyan egyenes, amely minden szakaszon átmegy
(belsô vagy végponton). Olvasóink nem hagytak cserben
bennünket, érkezett három megfejtés, de sajnos egyik sem
hiba nélküli, amire rovatunk több éves történetében még nem
volt példa. ùgy tûnik, megfejtôinknek nem sikerült
megtalálniuk a megfelelô algoritmust, mert programjaik
viszonylag egyszerû tesztadatokon véreztek el. A
szakaszokat számnégyesekkel jelölve, a teszteredmények: a
(0,0,1,0), (2,0,3,0), (2,1,3,1) szakaszokra D.A. és P.A.
programja igen, T.L. programja nem választ adott, míg a
(0,0,1,0), (2,1,3,1), (4,2,5,2) szakaszokra a fenti
sorrendben a válaszok: igen, nem, nem; tehát egyik program
sem kezelte jól ezen -- és más hasonló -- eseteket. (A
mellékelt leírásokból az következtethetô ki, hogy
megfejtôink gondosan sokkal több, kimondottan rafinált
elhelyezkedésû szakaszon próbálták ki programjaikat, a
fentiekhez hasonló elemi esetek elkerülték figyelmüket.)
A látszólagos sikertelenségen felbuzdulva az elôre
menekülés startégiáját választjuk, s nehezítjük a
feladatot. (A matematika nem egy olyan tételt ismer,
amelyet könnyebb általánosítva, ""nehezítve" bizonyítani,
mint eredeti formájában.)
Végezetül nehány elegyes megjegyzés, halk kérés a
megoldásokkal kapcsolatban. A beküldött programok esetében
soha nem elégszünk meg a listák ""szárazon" (értsd:
papíron) történô nézegetésével (elegánsan: elemzésével),
hanem mindig ki is próbáljuk futás közben azokat. Viszont
gyakran kapunk több oldalas listákat, papiron... Éppen
ezért okozott nagy örömet, hogy immár BBS-en is kapunk
megoldásokat, kérjük, aki teheti, éljen ezzel a
lehetôséggel. Sajnos, néha késünk a megfejtéseket
tartalmazó lemezek visszaküldésével, de azért arra
buzdítanánk olvasóinkat, hogy ha nem BBS-en, akkor lemezen
küldjék munkáikat. Persze örömmel fogadjuk a papíron
küldött listákat is, de ha lehetne, akkor jó minôségben
nyomtatva, hogy legyen némi esély a beszkennelésre...
@KBánhegyesi Zoltán@N
@Vùj rejtvényünk@N
@VIsmét szakaszok@N
Varga József feladatát némileg átalakítva újra kitûzzûk:
Adott @KN@N szakasz a síkban, például kezdô- és
végpontjának koordinátáival. îrjunk programot, amely
választ ad arra a kérdésre, hogy húzható-e olyan egyenes,
amely minden szakaszon átmegy (belsô vagy végponton).
Amennyiben van ilyen egyenes, legalább egy egyenletét
(pontjait, rajzát stb.) adja meg a program.
Beküldési határidô: 1994. novenber 25.